草庐IT

java - 从方法返回数组

全部标签

ruby - 查找两个数组之间的共同值

如果我想比较两个数组并创建一个内插输出字符串,如果数组y中的数组变量存在于x中,我如何获得每个匹配元素的输出?这就是我正在尝试但未完全得到结果的方法。x=[1,2,4]y=[5,2,4]x.eachdo|num|puts"Thenumber#{num}isinthearray"ifx.include?(y.each)end#=>[1,2,4] 最佳答案 可以使用设置交集的方法&为此:x=[1,2,4]y=[5,2,4]x&y#=>[2,4] 关于ruby-查找两个数组之间的共同值,我们在

ruby - 如何合并散列数组以获取值数组的散列

这与TurningaHashofArraysintoanArrayofHashesinRuby相反.优雅地和/或高效地将一个散列数组转换为一个散列,其中的值是所有值的数组:hs=[{a:1,b:2},{a:3,c:4},{b:5,d:6}]collect_values(hs)#=>{:a=>[1,3],:b=>[2,5],:c=>[4],:d=>[6]}这段简洁的代码几乎可以工作,但在没有重复项时无法创建数组:defcollect_values(hashes)hashes.inject({}){|a,b|a.merge(b){|_,x,y|[*x,*y]}}endcollect_val

ruby - 如何在 Ruby 中删除数组中满足条件的所有元素?

我如何在Ruby中实现它?有没有一行代码技术?假设我想去掉整数数组中小于3的所有元素。 最佳答案 您可以使用new_array=array.reject{|x|x(reject返回一个新数组)或array.reject!{|x|x(reject!又名delete_if就地修改数组)。还有(更常见的)select方法,其作用类似于reject除了您指定保留元素的条件,而不是拒绝它们(即要摆脱小于3的元素,您将使用new_array=array.select{|x|x>=3})。 关于rub

ruby - Ruby 中的方法名有什么限制?

例如,我在下面的代码片段中找到方法名称bundler?,但不知道?字符是专门的关键字还是只是一部分方法名。#Thisisapredicateusefulforthedoc:guidestaskofapplications.defbundler?#NotethatrakesetsthecwdtotheonethatcontainstheRakefile#beingexecuted.File.exists?('Gemfile')end 最佳答案 Ruby中的方法名可以包含大小写字母、数字、下划线_和标点符号!、?,=。方法名不能以数字开

ruby - 迭代一个数组,一次 n 项

我有一个数组:[1,2,3,4,5,6,7,8,9,0]我想一次迭代3,这会产生1,2,3and4,5,6and7,8,9and0在Ruby中执行此操作的最佳方法是什么? 最佳答案 您正在寻找#each_slice.data.each_slice(3){|slice|...} 关于ruby-迭代一个数组,一次n项,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12869614/

ruby - 确定一个值是否存在于哈希数组中

我有以下内容:array_of_hashes=[{:a=>10,:b=>20},{:a=>11,:b=>21},{:a=>13,:b=>23}]如果:a=>11存在于array_of_hashes中,我将如何查找array_of_hashes.include?似乎不起作用 最佳答案 array_of_hashes.any?{|h|h[:a]==11} 关于ruby-确定一个值是否存在于哈希数组中,我们在StackOverflow上找到一个类似的问题: http

ruby - Ruby 中的发送方法

我刚读到Ruby中send的作用,但在查看这段代码时我仍然感到困惑(它来自测验,但无论如何它已经过期)x=[1,2,3]x.send:[]=,0,2x[0]+x.[](1)+x.send(:[],2)我明白第一行给x赋了一个数组然后我根本不明白:[]=,0,2做了什么,我也不明白为什么那里需要发送我不明白x.[](1)和x.send(:[],2)在最后一行做什么我真的很困惑,我只是无法在网上找到这些信息。我找到了什么senddoes但我仍然对这段代码整体感到有点困惑和困惑。 最佳答案 首先,[](数组索引)和[]=之类的东西只是Ru

Ruby:更新哈希值最简单的方法是什么?

说:h={1=>10,2=>20,5=>70,8=>90,4=>34}我想将每个值v更改为foo(v),这样h将是:h={1=>foo(10),2=>foo(20),5=>foo(70),8=>foo(90),4=>foo(34)}实现此目标的最优雅方法是什么? 最佳答案 您可以使用update(merge!的别名)使用block更新每个值:hash.update(hash){|key,value|value*2}请注意,我们正在有效地将hash与其自身合并。这是必需的,因为Ruby将调用block来解决任何碰撞键的合并,并使用bl

ruby - to_proc 方法在 Ruby 中意味着什么?

我正在学习Rails并关注thisthread.我坚持使用to_proc方法。我只将符号视为字符串的替代品(它们类似于字符串,但在内存方面更便宜)。如果还有什么我缺少的符号,请告诉我。请用简单的方式解释to_proc的含义及其用途。 最佳答案 有些方法采用一个block,并且这种模式经常出现在一个block中:{|x|x.foo}人们喜欢用更简洁的方式来写。为了做到这一点,他们使用了以下组合:符号、方法Symbol#to_proc、隐式类转换和&运算符。如果您将&放在参数位置的Proc实例前面,它将被解释为一个block。如果您将P

ruby - 将数组的值加到哈希中

这是我的数组[{:amount=>10,:gl_acct_id=>1,:alt_amount=>20},{:amount=>20,:gl_acct_id=>2,:alt_amount=>30}]我要结果[{:amount=>30}]or{:amount=30}有什么想法吗? 最佳答案 Ruby版本>=2.4.0有一个Enumerable#sum方法。所以你可以这样做arr.sum{|h|h[:amount]} 关于ruby-将数组的值加到哈希中,我们在StackOverflow上找到一个